widget: Don't crash if setting alpha on non-realized widget.
authorAlexander Larsson <alexl@redhat.com>
Thu, 4 Jul 2013 10:54:59 +0000 (12:54 +0200)
committerAlexander Larsson <alexl@redhat.com>
Thu, 4 Jul 2013 11:10:58 +0000 (13:10 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=703154

gtk/gtkwidget.c

index b5844e869e7b651a742dbaeefc72bbaa4c83fb08..d22b00c1902e6b2c03205d92186a543069029f38 100644 (file)
@@ -4999,6 +4999,10 @@ gtk_widget_realize (GtkWidget *widget)
       _gtk_widget_enable_device_events (widget);
       gtk_widget_update_devices_mask (widget, TRUE);
 
+      if (gtk_widget_is_toplevel (widget))
+       gdk_window_set_opacity (priv->window,
+                               priv->alpha / 255.0);
+
       if (priv->context)
        gtk_style_context_set_scale (priv->context, gtk_widget_get_scale_factor (widget));
       gtk_widget_connect_frame_clock (widget,
@@ -14953,12 +14957,14 @@ gtk_widget_update_alpha (GtkWidget *widget)
 
   priv->alpha = alpha;
 
-  if (gtk_widget_is_toplevel (widget))
-    gdk_window_set_opacity (priv->window,
-                           priv->alpha / 255.0);
-
   if (gtk_widget_get_realized (widget))
-    gtk_widget_queue_draw (widget);
+    {
+      if (gtk_widget_is_toplevel (widget))
+       gdk_window_set_opacity (priv->window,
+                               priv->alpha / 255.0);
+
+      gtk_widget_queue_draw (widget);
+    }
 }
 
 static void